% !Mode:: "TeX:UTF-8"
% 上面这一行使得在windows环境中打开可以正常显示
\input{./common/head.tex}

\begin{document}
\begin{CJK}{UTF8}{song}
\title{TEP文档结构和关键词说明}
\author{张頔 翻译作品}
\maketitle

\begin{tabular}{|l|l|}
  \hline
    TEP:		& 1 \\
    Group:		& Core Working Group\\
    Type:		& Best Current Practice\\
    Status:		& Final\\
    TinyOS-Version:	& All\\
    Author:		& Philip Levis\\
    Translator:		& Zhang Di\\
  \hline
\end{tabular}

\begin{quote}
  This document specifies a Best Current Practices for the TinyOS Community, 
  and requests discussion and suggestions for improvements. 
  Distribution of this memo is unlimited.
\end{quote}

\begin{abstract}
  本备忘录描述了TinyOS扩展建议（TEP）文档的结构，并定义了其中的关键词含义。
  \footnote{TEP:TinyOS Extension Proposal}
\end{abstract}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{简介}
  出于便于管理、阅读和开发的目的，所有的TEP文件都必须(MUST)有统一的固定格式。
  \footnote{译者注：在所有译文中，只要是涉及关键词，均加括号标注。而中文翻译则以通顺为原则。}
  不仅如此，为了简化开发工作和增强不同实现间的互操作性，所有的TEP文档也必须(MUST)
  遵循此处定义的关键词（这些关键词用来指定实现的一致性级别）。
  \footnote{在TinyOS的词汇中，“Implementation”一词经常出现，直译为“实现”。
	    中文中的“实现”往往做动词，但此中为名词。计算机科学中这样的地方很多，读者应当慢慢习惯。
	    比如标准C中“implementation defined”，国内习惯译法便为“实现定义”}
  本文档在定义了这些规范的同时，也遵循这些规范。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{关键词}
  本文档中的“必须(MUST)”、“禁止(MUST NOT)”、“必需(REQUIRED)”、“要(SHALL)”、\\
  “不要(SHALL NOT)”、“应当(SHOULD)”、“不应当(SHOULD NOT)”、“推荐(RECOMMENDED)”、
  “可以(MAY)”、“可选(OPTIONAL)”等关键词均应当按照TEP1所述解释。
  注意，随着文档对实现的要求级别不同时，所用关键词也不同。
  另，只有大写关键字，才表达其被定义的特定含义，相关文档应当(SHOULD)避免不必要的小写形式以防混淆。
  \subsection{必须(MUST)}
    必须(MUST)：这个词，和必需(REQUIRED)、要(SHALL)一样，都意味着该定义是规范中绝对的要求。
  \subsection{禁止(MUST NOT)}
    禁止(MUST NOT)：和不要(SHALL NOT)一样，都意味着该定义是规范中绝对的禁止。
  \subsection{应当(SHOULD)}
    应当(SHOULD)：和“推荐的”，都表示在特定的环境和条件下，可能有正当的原因去忽视一个特定的项目，
    存在不同的定义，但是必须要在充分理解语境、仔细推敲的基础上才可以做出抉择。
  \subsection{不应当(SHOULD NOT)}
    不应当(SHOULD NOT)：本短语和不推荐(NOT RECOMMENDED)一起，
    \footnote{什么叫语多必失，前面的关键词里，哪里有“不推荐(NOT RECOMMENDED)”，:)}
    表示在特定的环境和条件下，可能会有正当的理由说明该行为是可以接受或者有意义的，
    但是必须要在充分理解语境、仔细推敲、充分比较本短语形容下的行为的基础上才可以做出抉择。
  \subsection{可以(MAY)}
    可以(MAY)：本词和可选(OPTIONAL)一样，都表示某特性为完全的可选的。
    一些实现者可能因为必要性或增强性选择实现该特性，另一些实现者则可能选择忽略该特性。
    后者的实现必须(MUST)能够和前者协同工作，尽管有可能导致功能的缩减。反之亦然，
    前者的实现也必须(MUST)和后者协同（当然，后者没提供的功能除外）。
  \subsection{这些命令的使用指南}
    在规范中提出上述这些要求时，应当三思而后行。
    特别地，必须(MUST)关键字只能在追求互操作性的确实需求中 或 用来限制可能会造成伤害的行为时使用。
    （例如：限制设备的重传行为\footnote{原文为limiting retransmissions}）
    For example, they must not be used to try to impose a particular method on
    implementors where the method is not required for interoperability.
    \footnote{这句英文在说车轱辘话，就不译了}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{TEP文档结构}
  TEP文档有两个主要部分：标头和正文\footnote{head and body}。
  标头会表述文档的元数据，以便管理和标记状态。正文包含具体内容。
  所有的TEPs都必须(MUST)遵从reStructuredText标准，并遵循docutils模板，
  以便能够从reStructuredText翻译为HTML和LaTeX。
  \subsection{TEP标头}
    TEP标头含有一些必须(MUST)包含的字段和一些可以(MAY)包含的字段。
    TEP标头不得(MUST NOT)出现TEP1文档或补充性的“当前最佳实践”TEP文档(BCP-TEPs)
    \footnote{Best Current Practice TEPs}
    中没有指定的标题。
    所有的TEP文档必须按顺序包含以下的头六个字段：
    \begin{enumerate}
      \item 第一字段是“TEP”，然后明确标出TEP文档的号码。每一个号码都是独一无二的，本文档即为TEP1。
	    TEP的类型决定了TEP号码的分配。通常情况下，当某文档成为TEP时，它会被分配到当前最小可用序号。
	    BCP-TEPs从1开始，其他的所有TEPs（记录、实验报告、信息）都从101开始。
      \item 第二字段陈述完成该文档的工作组的名字，即作者身份。本文档由核心工作组（Core Working Group）完成。
      \item 第三字段是“类型（Type）”，说明该TEP是何种类型的。总共有四种类型：\\
	    “当前最佳实践”类(Best Current Practice (BCP)), 
	    “文献”类(Documentary), \\
	    “信息”类(Informational), 
	    以及“实验”类(Experimental)。本TEP文档是BCP类型。
	    \begin{itemize}
	      \item “当前最佳实践”类TEP文档是最接近于标准的一类TEP文档，
		    \footnote{天阿，“当前最佳实践”这个名字好坳口，谁能找到一个合适的翻译？}
		    它代表了作者们从重要的实验工作中得出的总结。
		    想向TinyOS贡献代码（或TEPs）的开发者们应当(SHOULD)遵循所有的BCP-TEP文档。
	      \item 文献类TEP文档用来描述某个现存的系统或协议。文献类TEP文档必须(MUST)引用
		    某个可以容易获得的具体实现。在需要时，文献类TEP文档可以对互操作性进行简化，
		    并且对要实现TinyOS的某些服务进行描述。
		    \footnote{最后一句话翻译的不好。
			      原文：Documentary TEPs simplify interoperability when needed, 
			      and document TinyOS service implementations.
			      }
	      \item 信息类TEPs提供了对于整个团体有意义的一些信息，包括就无线电广播表现、硬件特性、
		    TinyOS软/硬件其他方面、组织和流程信息、以及能够帮助研究团体实现目标的经验等所收集的信息。
	      \item 实验报告类TEPs描述了解决问题的完整实验方法，尽管其不是TinyOS的核心内容，
		    也不需要成为核心部分。不像记录类TEPs，实验类TEPs能够描述一个没有参考执行的系统。

	    \end{itemize}
      \item 第四字段是Status，详细说明TEP的状态。
	    某TEP文档可以处在Draft状态中，表示其正在被编辑，亦或者处在Final状态，表示其已经完成。
	    一旦某TEP文档的状态变为Final，所能允许的唯一改动就是增加Obsoleted By字段。
      \item 第五字段Obsoletes是一个后向指示器，用于标识某个被当前TEP文档所替代的TEP文档。
	    一个Obsoletes字段可以(MAY)列出多个TEP文档。例如，当TEP191准备替代 TEP111 和 TEP116 时，
	    本字段会显示“Obsoletes: 111,116”。

	    当某个定稿TEP文档被取代时，向前者添加“Obsoleted By(被作废/被取代)”字段。该字段包含取代者的TEP的号码。
	    例如，当TEP111被TEP191所替代，字段为“Obsoleted By: 191”。

	    Obsoletes和Obsoleted By字段彼此之间必须(MUST)一致。
	    当某个TEP文档把另一TEP文档列入自己的Obsoletes字段中时，
	    它也必须(MUST)被列在那个TEP文档的Obsoleted By字段中。

	    Obsoletes字段用来跟踪某个抽象的变更或改动。这并不意味需要实现各种可能。
	    \footnote{They are not intended to force a single approach or
	    mechanism over alternative possibilities. }

	    如果某个TEP文档是“最佳实践类” 或“文献类”，那么它必须(MUST)包含字段 “TinyOS-Version:” ，
	    用以标识这个文档属于哪个版本的TinyOS。本文档属于所有的TinyOS版本，直到被未来的
	    某个TEP文档所取代(Obsoleted By)。这个字段必须(MUST)在Status字段之后，Author字段之前。
      \item 最后一个域是“作者域（Author）”，展示出文档的作者名称。
	    请注意，详细的作者联系方式不应当在这里标出。（见Section 3.2）
      \item 这里还有一个可选择的域，“拓展（Extends）”，涉及另一个TEP。
	    \footnote{TODO：这里的翻译尚未详细审定}
	    该字段的目的是表示这个TEP是另一个已存在的TEP的补充。
	    满足一个拥有拓展字段的TEP的要求，也就意味着要满足所有拓展域中列出的TEPs的要求。

      \item 如果某TEP在Draft状态，则必须(MUST)还含有四个附属的域：
	    Draft-Created, Draft-Modified, Draft-Version, and Draft-Discuss。
	    \begin{itemize}
	      \item Draft-Created：指明文档创立的时间；
	      \item Draft-Modified：指明文档最近一次修改的时间；
	      \item Draft-Version：指明修改次数的版本号，该字段必须(MUST)随每次修改增加；
	      \item Draft-Discuss：指明讨论该文档的邮件列表地址；
	    \end{itemize}
	    Final和Obsolete的TEP文档禁止(MUST NOT)含有上述这四种字段\textemdash它们仅限于Draft。
    \end{enumerate}
  \subsection{TEP正文}
    TEP正文一上来必须(MUST)是文档的标题。紧随其后的应当(SHOULD)是摘要，简单介绍本TEP的内容。
    较长的TEP可以(MAY)在摘要后面放一个目录。摘要和目录表后，应当(SHOULD)是一段导言，
    说清楚本TEP文档力图解决的问题，并向读者提供基本的背景信息。

    如果是“文献类”TEP，则必须(MUST)有标题为Implementation(实现)的段落，指明读者如何获得文档中所述内容的具体实现。

    如果是“当前最佳实践类”TEP，则必须(MUST)有标题为Reference(参考)的段落，向读者表明一个或更多的本实践的使用方式。
    \footnote{这句翻的有问题。原文：which points the reader to one or more reference uses of the practices}

    TEP文档的最后三段是，作者地址、参考文献和附录。一个完整的TEP必须(MUST)包含一段关于作者信息的内容，
    题目为“作者地址”(Author’s Address or Authors’ Addresses)。
    \footnote{哈哈，这里看出中文的优点了}

    TEP文档可以(MAY)包含引用文献，题目为“引用文献(Citations)”。引用文献必须(MUST)紧随作者信息段后面。
    TEP文档可以包含附录，其必须(MUST)紧随参考文献后，或者在没有参考文献的情况下，紧随作者信息段后。
    附录是按字母顺序排列下来的，请参见附录A。
\section{参考}
    The reference use of this document is TEP 1 (itself).
\section{鸣谢}
The definitions of the compliance terms are a direct copy of definitions taken from IETF RFC 2119.
\section{作者地址}
Philip Levis\\
358 Gates Hall\\
Stanford University\\
Stanford, CA 94305\\
phone - +1 650 725 9046\\
email - pal@cs.stanford.edu
\section{参考文献}
\begin{thebibliography}{99}
\bibitem{1}	reStructuredText Markup Specification. \\
		http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html
\end{thebibliography}
\section{Appendix A. Example Appendix}
  This is an example appendix. Appendices begin with the letter A.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{CJK}
\end{document}